<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  <!-- 成员  静态成员  实例成员 -->
  <!-- 构造函数 -->
  <script>
    // 构造函数
    function Dog(uname, age){
      this.uname = uname 
      this.age = age
      this.tian = () => {
        console.log('我是舔狗,舔到最后,一无所有')
      }
    }
    // 在构造函数上添加的属性和方法 只能被构造函数访问 静态成员 
    Dog.weight = 120
    Dog.run = () => {
      console.log('跑')
    }
    // 在构造函数的原型上添加的属性和方法,是被实例访问的 实例成员
    Dog.prototype.sleep = () => {
      console.log('我会睡觉')
    }
    // new 出来的叫实例
    // 能被new出来的实例 访问的属性或者方法 叫实例成员  uname age tian 都是实例成员
   const singleDog = new Dog('小刘', 28)
   console.log(singleDog.uname ) // 小刘
   console.log(singleDog.age) // 28
   singleDog.tian()
  //  console.log(singleDog.weight)
  //  singleDog.run()
  //  console.log(Dog.uname) //undefined
  //  console.log(Dog.age) //undefined
  //  Dog.tian()//undefined
  console.log(Dog.weight)
  Dog.run()

  singleDog.sleep()
  Dog.sleep()
  </script>
</body>
</html>